The RGB (red, green, blue) color model provides a commonly used specification of a three-dimensional color coordinate system. The function of the model is to permit convenient specification of all visible colors on a given display in terms of their red, green, and blue components. The RGB model is additive; Combination of the red, green, and blue components in the right amounts yields white, black, or any color in between. Thus, three RGB components of equal bandwidth are required for the display of any given color. A frame buffer having the same pixel depth and display resolution for each RGB component is used. The three RGB values are read from the buffer for further processing and display. Display devices differ however in their response to RGB data inputs.
In general, RGB video display devices such as, for example CRTs and LCD panels, have a non-linear response to input data. The transfer function of common display devices has an intensity proportional to a given exponent, usually referred to as “gamma.” A typical gamma for a CRT display, for example, is about 2.5, which produces white expansion and black compression. As a result, video pixel data typically requires gamma correction as part of preprocessing prior to being input to a display device. Thus to display a given pixel containing components of red, green, and blue (RGB), gamma-corrected R*G*B* values are input into the display device, where * denotes gamma. It is known in the arts to use a gamma lookup table (LUT) to make the gamma corrections, usually the gamma LUT is an area of memory located outside of the display controller.
In order to reduce the total size of the video frame buffer, it has long been known in the arts to use palette memory look-up table (LUTs). One to eight bits per pixel is stored in video memory, which is then used as an address pointer to the palette LUT memory to obtain a new, higher resolution, i.e., greater than eight bits, pixel for display. This practice has become well established in the video processing arts. Display controller integrated circuitry typically includes an allocation of palette LUT memory. In applications where the pixel depth is greater than eight bits to begin with, the palette LUT memory set aside in the IC is not used. In such cases, the pixel display data may proceed directly to gamma-correction, using a different physical memory location.
Consider together the need for both palette lookup and gamma correction in the display of video pixel data, there is always a need for gamma correction, sometimes a need for palette lookup, and sometimes but not always a need for both. The potential variation in preprocessing requirements for individual displays and available video pixel data depth in different applications creates some problems for designers. Of course, conserving chip area is always a major design consideration. Generally, physical space in the circuitry is set aside for pallet lookup memory, and additional physical space is set aside for gamma-correction lookup memory. These separate memory areas may be on separate chips, or on the same IC. In many instances, the on-chip palette lookup table memory area remains unused, while an off-chip gamma correction LUT is used, resulting in an inefficient increase in total chip area. Due to these and other problems, methods and systems for efficient, area-saving, preprocessing of video pixel data would be useful and advantageous in the arts.